﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Entidades.Reclamos;
using WebApplication.Reclamos;

public partial class frmHojaReclamacion : System.Web.UI.Page
{
    #region ATRIBUTOS
    
    protected IControllerRecHojaReclamacion _hojController;

    #endregion

    #region CONSTRUCTOR

    public frmHojaReclamacion() { 
        _hojController = new ControllerRecHojaReclamacion();
    }
    
    #endregion

    #region EVENTOS DEL FORMULARIO

    protected void Page_Load(object sender, EventArgs e)
    {        
        if (!IsPostBack)
        {
            lblMensaje.CssClass = "";
            CargarLibros();
            CargarBienes();
            Nuevo();                        
            verificarTipo();
        }
    }

    protected void Nuevo(){
        
        txtId.Enabled = true;
        txtNombre.Enabled = true;
        txtDomicilio.Enabled = true;
        txtDni.Enabled = true;
        txtTelefono.Enabled = true;        
        txtApoderados.Enabled = true;
        txtAcciones.Enabled = true;
        txtDetalle.Enabled = true;
        txtDescripcion.Enabled = true;
        rbTipoBien.Enabled = true;
        rbTipoReclamo.Enabled = true;
                
        btnGuardar.Visible = true;        
        hdFecReclamo.Value = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
        lblDia.Text = hdFecReclamo.Value;
        txtId.Text = "000" + _hojController.obtenerNumHoja().ToString();
        txtNombre.Text = "";
        txtDomicilio.Text = "";
        txtDni.Text = "";
        txtTelefono.Text = "";        
        txtApoderados.Text = "";
        txtAcciones.Text = "";
        txtDetalle.Text = "";
        txtDescripcion.Text = "";

        txtId.CssClass = "txtFiltro";
        txtNombre.CssClass = "txtFiltro";
        txtDomicilio.CssClass = "txtFiltro";
        txtDni.CssClass = "txtFiltro";
        txtTelefono.CssClass = "txtFiltro";
        txtApoderados.CssClass = "txtFiltro";
        txtAcciones.CssClass = "txtFiltro";
        txtDetalle.CssClass = "txtFiltro";
        txtDescripcion.CssClass = "txtFiltro";
        cmbLibro.CssClass = "txtFiltro";
        cmbTipoBien.CssClass = "txtFiltro";
            

    }

    protected void verificarTipo(){
        String accion = (Session["hoja_action"] == null) ? "" : Session["hoja_action"].ToString();
        if (accion.Equals("visualizar"))
        {
            txtId.Enabled = false;
            txtNombre.Enabled = false;
            txtDomicilio.Enabled = false;
            txtDni.Enabled = false;
            txtTelefono.Enabled = false;            
            txtApoderados.Enabled = false;
            txtAcciones.Enabled = false;
            txtDetalle.Enabled = false;
            txtDescripcion.Enabled = false;
            rbTipoBien.Enabled = false;
            rbTipoReclamo.Enabled = false;
            cmbTipoBien.Enabled = false;
            cmbLibro.Enabled = false;
            btnGuardar.Visible = false;           

            txtId.CssClass = "txtLectura";
            txtNombre.CssClass = "txtLectura";
            txtDomicilio.CssClass = "txtLectura";
            txtDni.CssClass = "txtLectura";
            txtTelefono.CssClass = "txtLectura";
            txtApoderados.CssClass = "txtLectura";
            txtAcciones.CssClass = "txtLectura";
            txtDetalle.CssClass = "txtLectura";
            txtDescripcion.CssClass = "txtLectura";
            cmbLibro.CssClass = "txtLectura";
            cmbTipoBien.CssClass = "txtLectura";
            
            Cargar();
        }
        else if (accion.Equals("modificar")) 
        {
            txtId.Enabled = true;
            txtNombre.Enabled = true;
            txtDomicilio.Enabled = true;
            txtDni.Enabled = true;
            txtTelefono.Enabled = true;            
            txtApoderados.Enabled = true;
            txtAcciones.Enabled = true;
            txtDetalle.Enabled = true;
            txtDescripcion.Enabled = true;
            rbTipoBien.Enabled = true;
            rbTipoReclamo.Enabled = true;
            cmbTipoBien.Enabled = true;
            cmbLibro.Enabled = true;
            btnGuardar.Visible = true;
            Cargar();
        }              
    }

    //Cargar datos de la hoja de reclamacion
    protected void Cargar() {
        int codigo = (Session["hoja_codigo"] == null) ? 0 : Convert.ToInt32(Session["hoja_codigo"].ToString());
        if (codigo > 0) {
            RecHojaReclamacion be = new RecHojaReclamacion();
            be.IdHoja = codigo;
            //hdValue.Value = codigo.ToString();
            RecHojaReclamacion lista = _hojController.obtenerHojaReclamacion(codigo);

            if(lista!=null){
                txtId.Text = "000"+lista.IdHoja.ToString();
                cmbLibro.SelectedValue = lista.Libro.IdLibro.ToString();                
                hdFecReclamo.Value = lista.FecReclamo.ToString("dd/MM/yyyy HH:mm:ss");
                lblDia.Text = hdFecReclamo.Value;
                txtNombre.Text = lista.NomConsumidor.ToString();
                txtDomicilio.Text = lista.DomConsumidor.ToString();
                txtDni.Text = lista.NumDNI.ToString();
                txtTelefono.Text = lista.NumTelefono.ToString();                
                txtApoderados.Text = lista.NomApoderador.ToString();
                txtDescripcion.Text = lista.DetBienContratado.ToString();
                txtAcciones.Text = lista.DetAcciones.ToString();
                txtDetalle.Text = lista.DetReclamo.ToString();
                cmbTipoBien.SelectedValue = lista.TipoBien.IdTipoBien.ToString();
                rbTipoReclamo.SelectedValue = lista.Reclamo.IdTipoReclamo.ToString();
                rbTipoBien.SelectedValue = lista.CodHoja.ToString();
            }
        }
    }

    //Cargar libros de reclamaciones
    protected void CargarLibros()
    {
        List<RecLibro> lista = _hojController.listarLibros();
        if (lista.Count > 0)
        {
            cmbLibro.DataSource = lista;
            cmbLibro.DataTextField = "descripcion";
            cmbLibro.DataValueField = "idLibro";
            cmbLibro.DataBind();
            cmbLibro.Items.Insert(0, new ListItem(Constantes.STATUS_SELECT, Constantes.CODE_SELECT));
        }
        else
        {
            cmbLibro.Items.Clear();
        }
    }

    protected void CargarBienes()
    {
        List<RecTipoBienContratado> lista = _hojController.listarBienes();
        if (lista.Count > 0)
        {
            cmbTipoBien.DataSource = lista;
            cmbTipoBien.DataTextField = "descripcion";
            cmbTipoBien.DataValueField = "idTipoBien";
            cmbTipoBien.DataBind();
            cmbTipoBien.Items.Insert(0, new ListItem(Constantes.STATUS_SELECT, Constantes.CODE_SELECT));
        }
        else
        {
            cmbTipoBien.Items.Clear();
        }
    }

    protected Boolean Validar() {
        return true;
    }

    #endregion

    #region EVENTOS DE BOTONES

    protected void btnGuardar_Click(object sender, EventArgs e)
    {

        Boolean resultado = true;
        resultado = Validar();
        if (resultado)
        {
            System.Globalization.CultureInfo cultura = new System.Globalization.CultureInfo("en-GB");

            String accion = (Session["hoja_action"] == null) ? "" : Session["hoja_action"].ToString();

            RecHojaReclamacion be = new RecHojaReclamacion();            
            be.IdHoja = Int32.Parse(txtId.Text);
            be.Libro.IdLibro = Int32.Parse(cmbLibro.SelectedValue);
            be.CodHoja = rbTipoBien.SelectedValue;
            be.FecReclamo = DateTime.Parse(hdFecReclamo.Value,cultura.DateTimeFormat);
            be.NomConsumidor = txtNombre.Text;
            be.DomConsumidor = txtDomicilio.Text;
            be.TipoBien.IdTipoBien = Int32.Parse(cmbTipoBien.SelectedItem.Value);
            be.Reclamo.IdTipoReclamo = Int32.Parse(rbTipoReclamo.SelectedItem.Value);
            be.DetBienContratado = txtDescripcion.Text;            
            be.NomApoderador = txtApoderados.Text;
            be.NumDNI = txtDni.Text;
            be.NumTelefono = txtTelefono.Text;
            be.DetReclamo = txtDetalle.Text;
            be.DetAcciones = txtAcciones.Text;


            if (accion.Equals("modificar"))
            {                
                be.IdHoja = _hojController.actualizarHojaReclamacion(be);                
            }
            else {
                be.IdHoja = _hojController.insertarHojaReclamacion(be);                            
            }

            if (resultado)
            {
                Session["hoja_rpta"] = 1;
                Response.Redirect("frmMtoHojaReclamacion.aspx");
            }
            else
            {
                lblMensaje.Text = Constantes.MSG_ERROR;
                lblMensaje.CssClass = "lblError";
            }
        }
    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Session["hoja_codigo"] = null;
        Session["hoja_action"] = null;
        Session["hoja_visible"] = null;
        Response.Redirect("frmMtoHojaReclamacion.aspx");
    }
    
    #endregion
}